{
 "cells": [
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "# python学习笔记\n",
    "## 第一章 认识python\n",
    "\n"
   ],
   "id": "6417d5e3fa7f23f1"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "from numpy.ma.core import count\n",
    "from typing_extensions import SupportsInt\n",
    "\n",
    "print(\"Hello World!\")  # 打印单个参数\n",
    "print(\"Hello\",\"world\") # 答应多个参数 默认换行\n",
    "print(\"hello\",\"world\",end=\"\",sep=\"\") # 中间不分隔\n",
    "print(\"hello\",\"world\",end=\"\") # 打印结尾不跟换行\n"
   ],
   "id": "fbc121e30a2defb3",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "占位符\n",
    "|   格式化字符   |                  含义                   |\n",
    "|:---------:|:-------------------------------------:|\n",
    "|%s|                  字符串                  |\n",
    "|%d|有符号的十进制整数，%06d表示输出的整数显示位数，不足的地方使用0补全|\n",
    "|%f|浮点数，%.2f表示小数点后只显示两位|\n",
    "|%%|输出百分数|"
   ],
   "id": "9a7d10ae53f90d1a"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# %占位符 格式化输出\n",
    "year = 2024\n",
    "month = 2\n",
    "date = 2\n",
    "day = '一'\n",
    "weather = '晴'\n",
    "print('今天是%d年%d月%d日星期%s ，今天的天气是%s'%(year, month, date,day, weather))\n",
    "\n",
    "student_no = 1\n",
    "print(\"我的学号是 %06d\" % student_no)\n",
    "\n",
    "scale = 0.1\n",
    "print(\"数据比例是 %.02f%%\" % (scale * 100))"
   ],
   "id": "be5db1077b6a20d9",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# 系统输入\n",
    "s = input('请你输入你的名字：')\n",
    "print('你输入的是：',s)"
   ],
   "id": "37ccada04690d14d",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 第二章 变量与简单数据类型\n",
    "python中的数据类型: 整型、浮点型、布尔型、字符串\n",
    "* 整型（Integers）：表示整数，不带小数点。例如：100。\n",
    "* 浮点型（Floating point numbers）：表示带有小数点的数字。例如：15.20。\n",
    "* 复数（Complex Numbers）：表示带有实部和虚部的数字。例如：3.14j。\n",
    "* 布尔型（Boolean）：有两个值，True或False。\n",
    "* 字符串（String）：一串字符。例如：\"Hello, World!\"。\n",
    "* 列表（List）：有序的集合。可以包含任何数据类型：数字、字符串等。例如：[1, 'a', 2.3]。\n",
    "* 元组（Tuple）：类似于列表，但不可变。例如：(1, 'a', 2.3)。\n",
    "* 集合（Set）：无序且不重复的元素集合。例如：{1, 2, 3}。\n",
    "* 字典（Dictionary）：键值对的集合。例如：{'name': 'John', 'age': 30}。\n",
    "\n",
    "\n",
    "变量声明 变量名 = 变量值 全小写用下划线连接 也可以用驼峰式;\n",
    "常量声明 名 = 值 名字全大写（与java一致）"
   ],
   "id": "bdcb305c7bbd2b8e",
   "attachments": {
    "b8f16e3f-018c-4334-8fe5-66c69de59319.png": {
     "image/png": "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"
    },
    "6a95c070-4544-455e-a786-6d57121f007c.png": {
     "image/png": "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"
    }
   }
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "aaa = \"sdfdsaf\"\n",
    "bbb = 10\n",
    "# print(aaa + 10) # 会报错 与java不同\n",
    "\n",
    "# 截取字符串\n",
    "print(aaa[0],aaa[-1])\n",
    "\n",
    "#python误差问题\n",
    "aaa = 0.1\n",
    "bbb = 0.2\n",
    "print(aaa + bbb)"
   ],
   "id": "a5c929021ace8b0c",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "#常用函数\n",
    "int(\"222\")\n",
    "int(222.001)\n",
    "\n",
    "float(333)\n",
    "float(\"444\")\n",
    "\n",
    "bool(1)\n",
    "bool(0)\n",
    "\n",
    "str(234)"
   ],
   "id": "65106606929076b8",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 第三章 运算符号",
   "id": "10d67b4ae100a075"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# 算数运算符\n",
    "print(4 + 1)\n",
    "a = 10\n",
    "b = 3\n",
    "print(a - b)\n",
    "print(a * 4)\n",
    "print(a / b)\n",
    "print(a // b)  # 整除，取整\n",
    "print(a % b)   # 获取余数，求模\n",
    "print(a ** 3)  # 幂运算\n",
    "print(3 + 2 * (4 ** 2) )"
   ],
   "id": "34480912831f215f",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# 赋值运算符\n",
    "a = 2\n",
    "print(   a  )\n",
    "a +=    2  # 自增\n",
    "print   (  a  )\n",
    "a = a + 2\n",
    "print(a)"
   ],
   "id": "ed0a3dc5437c3cee",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# 比较运算符\n",
    "print(3 != 3)  # 判断不相等\n",
    "print(3 == 2)  # 判断相等\n",
    "print(3 >= 2)\n",
    "print(3 <= 3)\n",
    "print(3.0 == 3)\n",
    "print(True == False)\n",
    "print('hello' < 'hell')  # 字符串的比较运算：每个字符的ascii码值\n",
    "print(1<2<3)\n",
    "print(1<2 and 2<3)\n",
    "print('y'<'x'==False)\n",
    "print('y'<'x' and 'x'==False)"
   ],
   "id": "790154645544aca6",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# 逻辑运算符\n",
    "# 与，并且 and\n",
    "print(True and False)\n",
    "print(True and True)\n",
    "print(True and False and True)\n",
    "print(1==1 and True and 2<3)\n",
    "print('hello' and 'hi') # 短路运算\n",
    "print('' and 'hi')\n",
    "print(False and 'hi')\n",
    "print(0 and 1)\n",
    "# 或者or\n",
    "print(True or False)\n",
    "print(False or False or True)\n",
    "print(1 or 0)\n",
    "print(2024 or 2025 or 0)\n",
    "print(0 or '' or 888)\n",
    "# 非not\n",
    "print(not True)\n",
    "print(not 1)\n",
    "print(not '')\n",
    "# 优先级 not>and>or\n",
    "print(True and False and not False)\n",
    "print(True or False and True or False)"
   ],
   "id": "a9946a838db5a262",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# 位运算符\n",
    "# 按位与&\n",
    "'''\n",
    "101\n",
    "111\n",
    "----\n",
    "101\n",
    "'''\n",
    "print(5 & 7)\n",
    "# 按位或 |\n",
    "'''\n",
    "011\n",
    "100\n",
    "----\n",
    "111\n",
    "'''\n",
    "print(3 | 4)\n",
    "\n",
    "# 按位异或\n",
    "'''\n",
    "010\n",
    "100\n",
    "----\n",
    "110\n",
    "'''\n",
    "print(2 ^ 4)\n",
    "# 按位取反~\n",
    "'''\n",
    "01\n",
    "---\n",
    "10\n",
    "110\n",
    "'''\n",
    "print(~1)\n",
    "# 左移 右移\n",
    "'''\n",
    "101\n",
    "----\n",
    "10100\n",
    "'''\n",
    "print(5<<2)\n"
   ],
   "id": "7f97a96ee8b5c531",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# 成员运算符\n",
    "print('12' in '123')\n",
    "print('hi' not in 'hello')\n",
    "a = 1\n",
    "b = 2\n",
    "print(a is b)\n",
    "print(a is not b)"
   ],
   "id": "617a4d707beaba46",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 第四章 条件判断",
   "id": "10b5a361766f1734"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# if语句\n",
    "aaa = 6\n",
    "if aaa == 7: # 后面有个冒号\n",
    "    print(\"if语句\") # 前面有个tab键\n",
    "elif aaa == 6:\n",
    "    print(\"elif语句\")\n",
    "else:\n",
    "    print(\"else语句\")\n",
    "\n",
    "# 嵌套\n",
    "bb = 2\n",
    "cc = 3\n",
    "if bb == 2:\n",
    "    if cc == 3:\n",
    "        print(\"第二层循环\")"
   ],
   "id": "c7d100f225bb57ca",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# match 语句\n",
    "x = 122\n",
    "match x:\n",
    "    case 1:\n",
    "        print(\"数字是1\")\n",
    "    case 10:\n",
    "        print(\"数字是10\")\n",
    "    case _:\n",
    "        print(\"其他的数字\")"
   ],
   "id": "7a6f8531c431198f",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 第五章 循环\n",
    "* break跳出循环\n",
    "* continue跳出本次循环"
   ],
   "id": "578e4ce85edd7db3"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# while 循环\n",
    "aaa = 0\n",
    "while aaa < 10:\n",
    "    print(aaa)\n",
    "    aaa += 1"
   ],
   "id": "753730a10cdd46ec",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# for 循环\n",
    "aaa = 0\n",
    "for aaa in range(10):\n",
    "    print(aaa)"
   ],
   "id": "b2727f90fca3bd8",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# pass 的使用\n",
    "aaa = 0\n",
    "while aaa < 10:\n",
    "    if aaa < 5:\n",
    "        pass\n",
    "    else:\n",
    "        print(aaa)\n",
    "    aaa += 1"
   ],
   "id": "98e70b1b1565497b",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 第六章 组合数据类型\n",
    " * 序列通用操作： 有序排列，包括 列表、range、元组、字符串\n",
    "\n",
    "\n",
    "|    函数     |描述|备注|\n",
    "|:---------:|:--:|:--:|\n",
    "| `len(item)` |计算容器中元素个数||\n",
    "| `del(item)` |删除变量|del有两种方式|\n",
    "| `max(item)` |返回容器中元素最大值|如果是字典，只针对key比较|\n",
    "| `min(item)` |返回容器中元素最小值|如果是字典，只针对key比较|\n",
    "\n",
    "|描述|python表达式|结果|支持的数据类型|\n",
    "|--|--|--|--|\n",
    "|`切片`|\"0123456789\"[::-2]|\"97531\"|字符串、列表、元组|\n",
    "\n",
    "\n",
    "|     运算符     |     python表达式     |             结果             |   描述    |    支持的数据类型    |\n",
    "|:-----------:|:-----------------:|:--------------------------:|:-------:|:-------------:|\n",
    "|      `+`      |   [1,2] + [3,4]   |         [1,2,3,4]          |   合并    |   字符串、列表、元组   |\n",
    "|      `*`      |   [\"Hi!\"] * 4]    | ['Hi!','Hi!','Hi!','Hi!']  |   重复    |   字符串、列表、元组   |\n",
    "|     `in`      |   3 in (1,2,3)    |            True            | 元素是否存在  | 字符串、列表、元组、字典  |\n",
    "|   `not in`    | 4 not in (1,2,3)  |            True            |  元素比较   | 字符串、列表、元组、字典  |\n",
    "| `> >= = < <=` |  (1,2,3)<(2,2,3)  |            True            |  元素比较   |   字符串、列表、元组   |\n"
   ],
   "id": "a713f2edd412b96d"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 列表（List):有序可重复\n",
    "\n",
    "| 分类| 关键字/函数/方法                                                                         | 说明                                                      |\n",
    "|:--|:----------------------------------------------------------------------------------|:--------------------------------------------------------|\n",
    "| 增加| list.insert(index,data)<br>list.append(data)<br>list.extend(list2)                | 再指定位置插入数据<br>再末尾追加数据<br>将列表2的数据追加到列表                    |\n",
    "|修改| list[index] = data                                                                | 修改指定缩影的数据                                               |\n",
    "|删除| del list[index]<br>list.remove[data]<br>list.pop<br>list.pop(index)<br>list.clear | 删除指定索引的数据<br>删除第一个出现的指定数据<br>删除末尾数据<br>删除指定索引的数据<br>清空列表 |\n",
    "|统计|len(list)<br>list.count(data)|列表长度<br>数据在列表中出现的次数|\n",
    "|排序|list.sort()<br>list.sort(reverse=True)<br>list.reverse()|升序排序<br>降序排序<br>逆序、反转|\n",
    "\n",
    "\n",
    "\n"
   ],
   "id": "3861211e474b16f7"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# 定义\n",
    "list1 = [] # 创建一个空列表\n",
    "list2 = [10,9,True,'张三']\n",
    "list3 = list()\n",
    "print(list3)\n",
    "\n",
    "# 列表相加\n",
    "li4 = [1,2,3]\n",
    "li5 = [3,5,6]\n",
    "li6 = [[1,2],[2,3,4]]\n",
    "print(\"li4 + li5:\",li4 + li5)\n",
    "print(li6[1][2]) # 二维数组\n",
    "\n",
    "# 列表相乘\n",
    "print('li4 * 3:',li4 * 3)\n",
    "\n",
    "# 成员判断\n",
    "print('3 in li4:',3 in li4)\n",
    "\n",
    "# 遍历\n",
    "for param in li4:\n",
    "    print('for遍历',param)\n",
    "\n",
    "# 遍历加上索引\n",
    "for index,param in enumerate(li4):\n",
    "    print(index,param)\n",
    "\n",
    "# while 循环遍历\n",
    "i = 0\n",
    "while i < li4.__len__():\n",
    "    print('while遍历',li4[i])\n",
    "    i += 1\n",
    "\n",
    "# 切片\n",
    "s = 'abcdefgh'\n",
    "print(s[:])      # 'abcdefgh' - 整个序列\n",
    "print(s[::])     # 'abcdefgh' - 同上\n",
    "print(s[2:])     # 'cdefgh'   - 从索引2开始到结束\n",
    "print(s[:5])     # 'abcde'    - 从开始到索引5（不包括5）\n",
    "print(s[2:5])    # 'cde'      - 从索引2到5\n",
    "print(s[::2])    # 'aceg'     - 步长为2\n",
    "print(s[::-1])   # 'hgfedcba' - 反转序列"
   ],
   "id": "87a6033318f92735",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 元组（Tuple）：不能修改的多个元素组成的序列('aaa',1,2.2)\n",
    "### range: 系统提供的自建函数，一般用于for-in循环\n",
    "* range(start,end,[step=1]):生成一个等差序列[start,end)\n",
    "\n",
    "* 注意：属于不可变序列，不支持元素修改，不支持+和*操作"
   ],
   "id": "9687b9d092133a3d"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# range([start,]stop[,step]) [start,stop) 差为step的等差数列\n",
    "print(list(range(10)))\n",
    "print(list(range(1,10)))\n",
    "print(list(range(1,10,2)))"
   ],
   "id": "63f9efc4012f8813",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 字符串: 用双引号 单引号 三个双引号 三个三引号引用起来的字符串",
   "id": "ebb3b83e3926f9d9"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# 字符串运算\n",
    "aaa = 'abc'\n",
    "print(aaa + aaa)\n",
    "print(aaa * 3)\n",
    "# print(aaa + 3) # 犯法\n",
    "\n",
    "# 字符串的索引从0开始 倒数是-1开始\n",
    "print(aaa[0])\n",
    "print(aaa[-1])\n",
    "\n",
    "# 遍历\n",
    "for i in aaa:\n",
    "    print(i)\n",
    "\n",
    "i = 0\n",
    "while i < aaa.__len__():\n",
    "    print(aaa[i])\n",
    "    i += 1"
   ],
   "id": "a9b1ee070f0330c5",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 字典(dict): 无序的对象集合\n",
    "* 键key是索引\n",
    "* 值value是数据\n",
    "* 键和值之间使用:分隔\n",
    "* 值可以取任何数据类型，键只能使用字符串、数字、元组\n"
   ],
   "id": "228cc4bf65fdd204"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# 声明\n",
    "xiaoming = {'name' : '小明',\n",
    "            'age' : 18,\n",
    "            'gender': True\n",
    "            }\n",
    "d1 = {} #空字典\n",
    "d2 = dict() #空字典\n",
    "d3 = dict(a=1,b=2)\n",
    "d4 = dict([('a',1),('b',2)])\n",
    "d5 = dict({'a':1,'b':2})\n",
    "\n",
    "print(d4)"
   ],
   "id": "774af5e9a5370e16",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "\n",
    "### 集合(set): 无序不重复，可进行交集并集运算"
   ],
   "id": "dcd85c0680bb8c8"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "s1 = set() # 空集合 不能是{} 这是空字典\n",
    "s2 = {1,2,3,4}\n",
    "print(s1)\n",
    "print(set([3,4,5])) # 通过列表创建\n",
    "print(set((1,2,3))) # 通过元组创建\n",
    "print(set('hello')) # 同故宫字符串创建\n",
    "print(set({'name':'大宝','age':19})) # 通过字典创建\n"
   ],
   "id": "89dcd8c8ffdb85c2",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 可变类型&不可变类型\n",
    "* 不可变：数字，字符串，元组，布尔\n",
    "* 可变：列表，字典，集合"
   ],
   "id": "1f44e446c6d0c2d8"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 第七章 异常处理\n",
    "### 常见异常\n",
    "|         报错类型         |                   描述                    |\n",
    "|:--------------------:|:---------------------------------------:|\n",
    "|    AssertionError    |          当assert断言条件为假的时候抛出的异常          |\n",
    "|    AttributeError    |           当访问的对象属性不存在的时候抛出的异常           |\n",
    "|      IndexError      |             超出对象索引的范围时抛出的异常             |\n",
    "|       KeyError       |在字典中查找一个不存在的key抛出的异常|\n",
    "|     NameError                 |  访问一个不存在的变量时抛出的异常                                       |\n",
    "|    OSError                  |      操作系统产生的异常                                   |\n",
    "|   SyntaxError                   |   语法错误时会抛出此异常                                      |\n",
    "|     TypeError                 |   类型错误，通常是不同类型之间的操作会出现此异常                                      |\n",
    "|     ZeroDivisionError                 |      进行数学运算时除数为0时会出现此异常                                   |\n",
    "\n",
    "\n",
    "\n",
    "### raise关键字：手动抛出一个指定类型的异常，不带参数会抛出原异常，带参数是异常描述\n"
   ],
   "id": "4ab78352f0b419ce"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "try:\n",
    "    raise ZeroDivisionError('除0错误')\n",
    "except ZeroDivisionError as e:\n",
    "    print(e) #除0错误"
   ],
   "id": "199f59da24699a08",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### try-except语句",
   "id": "7c2c3852b684713c"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "try:\n",
    "    2 / 0\n",
    "except ZeroDivisionError as e :\n",
    "    # 异常处理\n",
    "    print(e)\n",
    "# [else:]\n",
    "    #可选，没有引发异常会执行\n",
    "# [finally:]\n",
    "    #无论如何都会执行的语句 可选\n",
    "    # [code]"
   ],
   "id": "692ba10e63646ee6",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 第八章 函数\n",
    "### 函数\n"
   ],
   "id": "5f5ae2bdbf152355"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# 函数定义\n",
    "def sum_2(a,b): # 形式参数\n",
    "    return a+b\n",
    "\n",
    "# 定义函数默认参数\n",
    "def power(x, n=2): #  n：默认参数，缺省参数\n",
    "    return x**n\n",
    "\n",
    "# 函数调用\n",
    "result = sum_2(9,8)  # 实际参数\n",
    "\n",
    "a = power(4,3)\n",
    "c = power(6)\n",
    "print(c)\n",
    "print(a)\n",
    "\n",
    "# 将八进制的 16 转换成10进制\n",
    "a = int('16', 8)\n",
    "print('将八进制的 16 转换成10进制',a)\n",
    "\n",
    "# 与占位符联合使用\n",
    "def infos(name,age=24,gender='女'):\n",
    "    return '大家好，我叫%s ，我今年%d岁，我是一名%s生'%(name,age,gender)\n",
    "s = infos('mia',24,'女')\n",
    "lily = infos('lily')\n",
    "jack = infos('jack',gender='男')\n",
    "print(jack)\n",
    "print(lily)\n",
    "\n",
    "# 可变参数\n",
    "def total(*args): # 可变参数\n",
    "    print(args)\n",
    "    result = 0\n",
    "    for i in args:\n",
    "        result += i*i\n",
    "    return result\n",
    "\n",
    "result = total(1,4,5,6,7,8,3)\n",
    "\n",
    "print('total(1,4,5,6,7,8,3):',result)\n",
    "result = total(3,4,5)\n",
    "a = [1,2,3,4,5]\n",
    "result = total(*a)\n",
    "print('total(*a):',result)\n",
    "\n",
    "\n",
    "def f(**kwargs): # 可变参数，接收字典\n",
    "    for k,v in kwargs.items():\n",
    "        print(k,v)\n",
    "\n",
    "d = {'name':'xiaoming','age':18}\n",
    "f(**d)\n",
    "\n"
   ],
   "id": "c5d13050372552e5",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 变量作用域\n",
   "id": "12dfd5b4b546be3b"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# 全局变量\n",
    "num1 = 10  # 不可变数据类型\n",
    "list1 = [1,2,3,4,5]   # 可变数据类型\n",
    "\n",
    "def f():\n",
    "    global num1  # 声明在f中使用的num1是全局变量num1\n",
    "    num2 = 20  # 局部变量\n",
    "    num1 = 20\n",
    "    list1[2] = 8\n",
    "    print('在函数f中打印num1的值',num1)\n",
    "    print('在函数f中打印list1的值',list1)\n",
    "    print('num2的值',num2)\n",
    "\n",
    "\n",
    "\n",
    "f()\n",
    "# print('在函数f外打印变量num2的值',num2) # 局部变量不能在函数外使用\n",
    "print('在函数f执行后打印num1的值',num1)\n",
    "print('在函数f执行后打印list1的值',list1)"
   ],
   "id": "1076f26e21f61d2c",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 匿名函数\n",
   "id": "9329f6560e75d632"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "fun = lambda a,b:a+b\n",
    "result = fun(5,2)\n",
    "print(result)\n",
    "\n",
    "a = [1,2,3,4,5]\n",
    "result = map(lambda x:x**3, a)  # 映射\n",
    "print(list(result))\n",
    "\n",
    "#  reduce  累积\n",
    "from functools import reduce\n",
    "result = reduce(lambda x,y:x*y,a)\n",
    "print('累积',result)\n",
    "\n",
    "# filter 过滤\n",
    "result = filter(lambda x:x%2,a)\n",
    "print(list(result))\n",
    "\n",
    "a = [1,2,3,40,5,6,0,6,0,5]  # 12340560605\n",
    "result = filter(lambda x:x!=0,a)\n",
    "print(list(result))\n",
    "\n",
    "result = 0\n",
    "mul = 1\n",
    "print(a[::-1])  # 反转\n",
    "for i in a[::-1]:\n",
    "    result = result + i*mul\n",
    "    mul = mul*10**len(str(i))\n",
    "    print(len(str(i)))\n",
    "print(result)\n",
    "\n",
    "a = [1,2,3,4,5]\n",
    "result = reduce(lambda x,y:x*10**len(str(y))+y,a)\n",
    "print(result)"
   ],
   "id": "a3514e87a1cc76b0",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 上台阶",
   "id": "54d991139464ad6"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# 10阶楼梯，每次上1个台阶或者上2个台阶，问一共有多少种走法  data[i] = data[i-1] + data[i-2]\n",
    "# 3\n",
    "# 1 1 1\n",
    "# 1 2\n",
    "# 2 1\n",
    "# f(n) = f(n-1) + f(n-2)\n",
    "# n=0,f(n)=0\n",
    "# n=1,f(n)=1\n",
    "# n=2,f(n)=2\n",
    "\n",
    "def f(n):  # 计算出n阶楼梯，一共有多少种走法\n",
    "    if n==0:\n",
    "        return 0\n",
    "    elif n==1:\n",
    "        return 1\n",
    "    elif n==2:\n",
    "        return 2\n",
    "    return f(n-1)+f(n-2)\n",
    "\n",
    "print('楼梯有%d阶的时候，有%d种走法'%(5,f(5)))\n",
    "\n",
    "a = [0,1,2]\n",
    "for i in range(3,11):\n",
    "    a.append( a[i-1] + a[i-2])\n",
    "    print('楼梯有%d阶的时候，有%d种走法' % (i, a[-1]))\n"
   ],
   "id": "ece86046814d3d22",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 名片管理系统\n",
   "id": "dd753ca7b166ee7f"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "cards = [{'name': 'mia', 'phone': '213', 'qq': '3546', 'email': '123'},\n",
    "{'name': 'jack', 'phone': '124235', 'qq': '23423434', 'email': '3465'},\n",
    "         {'name': 'tom', 'phone': '234', 'qq': '234', 'email': '09877'}]\n",
    "def menu():\n",
    "    print('*'*30)\n",
    "    print('''欢迎使用【名片管理系统】\n",
    "    1.新建名片\n",
    "    2.显示全部\n",
    "    3.查询名片\n",
    "    0.退出系统''')\n",
    "    print('*'*30)\n",
    "def new_card(name,phone,qq,email):\n",
    "    user = {\n",
    "        'name':name,\n",
    "        'phone':phone,\n",
    "        'qq':qq,\n",
    "        'email':email\n",
    "    }\n",
    "    cards.append(user)\n",
    "    return True\n",
    "\n",
    "def modify_card():\n",
    "    pass\n",
    "\n",
    "def del_card():\n",
    "    pass\n",
    "\n",
    "def show_card():\n",
    "    for card in cards:\n",
    "        print(card)\n",
    "\n",
    "def query_card(kw):\n",
    "    for card in cards:\n",
    "        for k,v in card.items():\n",
    "            if kw == v:\n",
    "                return card\n",
    "    return False\n",
    "\n",
    "def quit():\n",
    "    print('欢迎下次使用【名片管理系统】')\n",
    "\n",
    "menu()\n",
    "while True:\n",
    "    op = input('请输入你要操作的序号：')\n",
    "    if op=='1':\n",
    "        name = input('请输入你的姓名：')\n",
    "        phone = input('请输入你的电话：')\n",
    "        qq = input('请输入你的qq号：')\n",
    "        email = input('请输入你的电子邮箱：')\n",
    "        result = new_card(name,phone,qq,email)\n",
    "        if result:\n",
    "            print('成功新建名片')\n",
    "        else:\n",
    "            print('请重试')\n",
    "    elif op=='2':\n",
    "        show_card()\n",
    "    elif op=='3':\n",
    "        kw = input('请输入查询的关键字：')\n",
    "        result = query_card(kw)\n",
    "        if result:\n",
    "            print(result)\n",
    "            op2 = input('输入4修改名片，输入5删除名片：')\n",
    "            if op2 =='4':\n",
    "                modify_card()\n",
    "            if op2=='5':\n",
    "                del_card()\n",
    "\n",
    "        else:\n",
    "            print('没有查到相关信息')\n",
    "    elif op=='0':\n",
    "        quit()\n",
    "        break\n",
    "    else:\n",
    "        print('请重试')"
   ],
   "id": "3af755d813c5ad4d",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 第九章 模块\n",
    "### 模块的导入与使用\n",
    "* 模块 就好比是 工具包，要想使用这个工具包中的工具，就需要 导入 import 这个模块\n",
    "* 每一个以扩展名 py 结尾的 python 源代码文件都是一个 模块\n",
    "* 在模块中定义的 全局变量 、 函数 都是模块能够提供给外界直接使用的工具\n",
    "### 包的使用\n",
    "* 包是Python模块的一种组织形式，将多个模块组合在一起，形成一个大的Python工具库。包通常是一个拥有__init__.py文件的目录，它定义了包的属性和方法。\n",
    "\n",
    "### 常见的标准库\n",
    "![常用模块](./images/常用模块.png)\n",
    "![random](./images/random.png)\n",
    "![math](./images/math.png)\n",
    "![re](./images/re.png)\n",
    "![turtle](./images/turtle.png)\n",
    "\n",
    "\n"
   ],
   "id": "bb47555d5c3d0c9a"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# 引入模块\n",
    "# import module\n",
    "\n",
    "# 引入包里面的模块\n",
    "# from packet import module\n",
    "# import packet.module"
   ],
   "id": "dc3e81a03fa71b58",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 第十章 文件及io操作\n",
    "### 读取文件\n",
    "* 打开文件的模式\n",
    "![打开文件的模式](./images/打开文件的模式.png)"
   ],
   "id": "280ebdeed9f3f2aa"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "import os\n",
    "# 打开文件\n",
    "# f = open('iotest.txt')  # 相对路径\n",
    "path = os.getcwd() # 获取项目根路径\n",
    "print(\"path\",path)\n",
    "filename = path + '/iotest.txt'\n",
    "f = open(filename, mode='r', encoding='utf-8')  # 绝对路径\n",
    "\n",
    "# # 读取文件 只读取五个字\n",
    "read5 = f.read(5)\n",
    "print('read5',read5)\n",
    "\n",
    "# 读取一行\n",
    "context = f.readline()\n",
    "print('freadline',context)\n",
    "\n",
    "# 读取所有\n",
    "context = f.readlines()\n",
    "print('freadlines',context)\n",
    "# # 关闭文件\n",
    "f.close()\n",
    "\n",
    "# 读多次是接力的"
   ],
   "id": "c76a653a64eaab2a",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 文件写入\n",
   "id": "15c9640588d95eb5"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# 打开文件\n",
    "f = open('iotest.txt',mode='w',encoding='utf-8')\n",
    "# 写入文件内容\n",
    "f.write('你好，我是mia\\n')\n",
    "f.write('你是谁\\n')\n",
    "context = ['你好，我是mia','你是谁']\n",
    "for i in context:\n",
    "    f.write(i+'\\n')\n",
    "# 关闭文件\n",
    "f.close()\n",
    "\n",
    "\n",
    "\n",
    "f = open('iotest.txt',mode='r', encoding='utf-8')  # 相对路径\n",
    "context = f.read()\n",
    "print(context)\n",
    "f.close()"
   ],
   "id": "96a2a63ee3ea3e9e",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 文件追加",
   "id": "3071d10313ee502a"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# 打开文件\n",
    "f = open('iotest.txt',mode='a',encoding='utf-8')\n",
    "# 写入文件\n",
    "f.write('hello\\n')\n",
    "a=['a','vb\\n','c\\n']\n",
    "f.writelines(a)\n",
    "# 关闭文件\n",
    "f.close()"
   ],
   "id": "321b15f576641652",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### with关键字",
   "id": "3dbd01bfdd640669"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "with open('iotest.txt',mode='r',encoding='utf-8') as f:\n",
    "    context = f.read()\n",
    "    print(context)"
   ],
   "id": "35c1122c64a05f49",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### csv文件操作",
   "id": "73b8aa926cfe3d7f"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "    import csv\n",
    "    # 写操作\n",
    "    lista = [['jim','python',30],['jim','python',30],['jim','python',10],['jim','python',10]]\n",
    "    with open('data.csv',mode='a',encoding='utf-8', newline='') as f:\n",
    "        cf = csv.writer(f)\n",
    "        cf.writerows(lista)"
   ],
   "id": "26cb08949708c6b2",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "    # 读取操作\n",
    "    import csv\n",
    "    with open('data.csv',mode='r',encoding='utf-8') as f:\n",
    "        cf = csv.reader(f)\n",
    "        head = next(cf)  #获取表头\n",
    "        print(head)\n",
    "        print(next(cf)) # 获取下一行\n",
    "        scores = []\n",
    "        for i in cf:\n",
    "            scores.append(int(i[2]))\n",
    "        print(sum(scores)/len(scores))"
   ],
   "id": "1c30d8bdfa63de48",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 第十一章：面向对象的程序设计\n",
    "### 类的创建"
   ],
   "id": "38abcd422306b54e"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "class Player(object): # object 基类 继承object类 可以不写\n",
    "    pass\n",
    "    # name = 'jim'\n",
    "    # age = 18\n",
    "\n",
    "tom = Player()  # 类的实例化（创建对象）\n",
    "tom.name = 'tom'\n",
    "\n",
    "print(tom.name)\n",
    "print(type(tom))\n",
    "print(isinstance(tom,object))\n",
    "print(isinstance(tom,Player))"
   ],
   "id": "b9551be76caa0397",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 实例属性",
   "id": "f3fdadddf8e62e85"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "class Player(object):\n",
    "    def __init__(self,name,age,city):  # 初始化函数（构造函数）\n",
    "        self.name = name\n",
    "        self.age = age\n",
    "        self.city = city\n",
    "\n",
    "mia = Player('mia',24,'上海')\n",
    "mia.city = '杭州'\n",
    "print(mia.__dict__)\n",
    "tom = Player('tom',34,'重庆')\n",
    "tom.height = 180\n",
    "tom.age = 32\n",
    "print(tom.__dict__) # 获取实例（对象）的所有属性"
   ],
   "id": "c282a8d0ae70ede6",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 类属性",
   "id": "b41978fb4199d193"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "class Player(object):\n",
    "    numbers = 0   # 类属性\n",
    "    def __init__(self,name,age,city):  # 初始化函数（构造函数）\n",
    "        self.name = name  # 实例属性\n",
    "        self.age = age\n",
    "        self.city = city\n",
    "        Player.numbers += 1\n",
    "\n",
    "mia = Player('mia',24,'上海')\n",
    "print(mia.__dict__)\n",
    "print('欢迎荣耀王者的第 %d 个玩家注册！' % Player.numbers)\n",
    "tom = Player('tom',32,'重庆')\n",
    "print('欢迎荣耀王者的第 %d 个玩家注册！' % Player.numbers)\n",
    "\n",
    "class weapon(object):\n",
    "    numbers = 0\n",
    "    max_damage = 10000\n",
    "    levels = ['青铜','白银','黄金','钻石','王者']\n",
    "    def __init__(self,name,damage,level):\n",
    "        self.name = name\n",
    "        self.damage = damage\n",
    "        self.level = level\n",
    "        weapon.numbers += 1\n",
    "        if damage>weapon.max_damage:\n",
    "            raise Exception('最大的伤害值是10000，请重试！')\n",
    "        if level not in weapon.levels:\n",
    "            raise Exception('段位设置错误！')\n",
    "try:\n",
    "    gun = weapon('magic',10000,'王者')\n",
    "    print(weapon.numbers)\n",
    "    arrow = weapon('arrow',450,'青铜')\n",
    "    print(weapon.numbers)\n",
    "except Exception as e:\n",
    "    print(e)"
   ],
   "id": "6116a8461c27ada0",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 实例方法",
   "id": "f5162eb2faf87219"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "class Player(object):\n",
    "    numbers = 0   # 类属性\n",
    "    levels = ['青铜', '白银', '黄金', '钻石', '王者']\n",
    "    def __init__(self,name,age,city,level):  # 初始化函数（构造函数）\n",
    "        self.name = name  # 实例属性\n",
    "        self.age = age\n",
    "        self.city = city\n",
    "        if level not in Player.levels:\n",
    "            raise Exception('段位设置错误！')\n",
    "        else:\n",
    "            self.level = level\n",
    "        Player.numbers += 1\n",
    "\n",
    "    def show(self):  # 实例的方法\n",
    "        print('我是荣耀王者的第%d个玩家，我的名字是%s，我来自 %s，我的段位是%s' % (Player.numbers,self.name,self.city,self.level))\n",
    "\n",
    "mia = Player(\"mia\",18,'上海','王者')\n",
    "mia.show()"
   ],
   "id": "a8de2a52c404f231",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 类方法",
   "id": "3ac765d6b83af232"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "class Player(object):\n",
    "    numbers = 0   # 类属性\n",
    "    levels = ['青铜', '白银', '黄金', '钻石', '王者']\n",
    "    def __init__(self,name,age,city,level):  # 初始化函数（构造函数）\n",
    "        self.name = name  # 实例属性\n",
    "        self.age = age\n",
    "        self.city = city\n",
    "        if level not in Player.levels:\n",
    "            raise Exception('段位设置错误！')\n",
    "        else:\n",
    "            self.level = level\n",
    "        Player.numbers += 1\n",
    "\n",
    "    @classmethod\n",
    "    def get_players(cls):  # 类方法\n",
    "        print('荣耀王者的用户数量已经达到了%d人'%cls.numbers)\n",
    "\n",
    "mia = Player('mia',24,'湖北','青铜')\n",
    "Player.get_players()"
   ],
   "id": "103f76eb2d05f89",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 静态方法",
   "id": "1b69c4305646b71"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "class Player(object):\n",
    "    numbers = 0   # 类属性\n",
    "    levels = ['青铜', '白银', '黄金', '钻石', '王者']\n",
    "    def __init__(self,name,age,city,level):  # 初始化函数（构造函数）\n",
    "        self.name = name  # 实例属性\n",
    "        self.age = age\n",
    "        self.city = city\n",
    "        if level not in Player.levels:\n",
    "            raise Exception('段位设置错误！')\n",
    "        else:\n",
    "            self.level = level\n",
    "        Player.numbers += 1\n",
    "\n",
    "    @staticmethod  # 静态方法\n",
    "    def isvalid(**kwargs):\n",
    "        if kwargs['age']>18:\n",
    "            return True\n",
    "        else:\n",
    "            return False\n",
    "\n",
    "\n",
    "infos = {'name':'mia','age':13,'city':'北京','level':'白银'}\n",
    "if Player.isvalid(**infos):\n",
    "    mia = Player('mia',infos['age'],'北京','白银')\n",
    "else:\n",
    "    print('请检查',infos['age'])"
   ],
   "id": "47951e4f856f6cff",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 继承",
   "id": "4470f2afbc23900b"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# 面向对象特点：继承、多态、封装\n",
    "class Player(object): # 父类\n",
    "    numbers = 0   # 类属性\n",
    "    levels = ['青铜', '白银', '黄金', '钻石', '王者']\n",
    "    def __init__(self,name,age,city,level):  # 初始化函数（构造函数）\n",
    "        self.name = name  # 实例属性\n",
    "        self.age = age\n",
    "        self.city = city\n",
    "        if level not in Player.levels:\n",
    "            raise Exception('段位设置错误！')\n",
    "        else:\n",
    "            self.level = level\n",
    "        Player.numbers += 1\n",
    "\n",
    "    def show(self):  # 实例的方法\n",
    "        print('我是荣耀王者的第%d个玩家，我的名字是%s，我来自 %s，我的段位是%s' % (Player.numbers,self.name,self.city,self.level))\n",
    "\n",
    "    def level_up(self):\n",
    "        index1 = Player.levels.index(self.level)\n",
    "        if index1<len(Player.levels)-1:\n",
    "            self.level = Player.levels[index1+1]\n",
    "\n",
    "    def get_weapon(self,weapon):\n",
    "        self.weapon = weapon\n",
    "\n",
    "    def show_weapon(self):\n",
    "        return self.weapon.show_weapon()\n",
    "\n",
    "    @classmethod\n",
    "    def get_players(cls):  # 类方法\n",
    "        print('荣耀王者的用户数量已经达到了%d人'%cls.numbers)\n",
    "\n",
    "    @staticmethod\n",
    "    def isvalid(**kwargs):\n",
    "        if kwargs['age']>18:\n",
    "            return True\n",
    "        else:\n",
    "            return False\n",
    "\n",
    "class VIP(Player): # 子类\n",
    "\n",
    "    # 构造函数重写\n",
    "    def __init__(self,name,age,city,level,coin):\n",
    "        # 调用父类的构造函数\n",
    "        super().__init__(name,age,city,level)\n",
    "        self.coin = coin\n",
    "\n",
    "    # 实例方法重写\n",
    "    def show(self):  # 实例的方法\n",
    "        print('我是荣耀王者的第%d个玩家，我的名字是%s，我来自 %s，我的段位是%s，我的余额是%d' % (Player.numbers,self.name,self.city,self.level,self.coin))\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "mia = VIP('mia',24,'哈尔滨','黄金',100)\n",
    "mia.show()\n"
   ],
   "id": "2b7900523b65c894",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 多态",
   "id": "67c6aa4738e3f860"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "class Animal(object):\n",
    "    def speak(self):\n",
    "        print('动物的叫声')\n",
    "        pass\n",
    "\n",
    "class Cat(Animal):\n",
    "    def speak(self):\n",
    "        print('喵喵')\n",
    "\n",
    "class Dog(Animal):\n",
    "    def speak(self):\n",
    "        print('汪汪')\n",
    "\n",
    "class Test(object):\n",
    "    def speak(self):\n",
    "        print('test')\n",
    "\n",
    "def speak(object):  # animal\n",
    "    object.speak()\n",
    "\n",
    "animal = Animal()\n",
    "kitty = Cat()\n",
    "puppy = Dog()\n",
    "t = Test()\n",
    "speak(animal)\n",
    "speak(kitty)\n",
    "speak(puppy)\n",
    "speak(t)"
   ],
   "id": "458b2bb7be0eaf1e",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 封装",
   "id": "cacdc4e1ac954aed"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "# # 封装\n",
    "#  self._name = name   # 单下划线 是 受保护的变量 还可以访问，但是一般不直接访问\n",
    "#  self.__age = age  # 双下划线 是 私有变量 无法直接访问（python自动转换名字了）\n",
    "class Player(object): # 父类\n",
    "    numbers = 0   # 类属性\n",
    "    levels = ['青铜', '白银', '黄金', '钻石', '王者']\n",
    "    def __init__(self,name,age,city,level):  # 初始化函数（构造函数）\n",
    "        self._name = name  # 实例属性\n",
    "        self._age = age\n",
    "        self._city = city\n",
    "        if level not in Player.levels:\n",
    "            raise Exception('段位设置错误！')\n",
    "        else:\n",
    "            self.level = level\n",
    "        Player.numbers += 1\n",
    "\n",
    "    @property\n",
    "    def city(self):\n",
    "        return self._city\n",
    "\n",
    "    @city.setter\n",
    "    def city(self,city):\n",
    "        if len(city)>10 or len(city)<2:\n",
    "            raise Exception('城市名称有误，请检查！')\n",
    "        self._city = city\n",
    "\n",
    "\n",
    "    @property\n",
    "    def age(self):\n",
    "        return self._age\n",
    "\n",
    "    @age.setter\n",
    "    def age(self,age):\n",
    "        if not isinstance(age,int):\n",
    "            raise Exception('年龄必须是整数')\n",
    "        if age<0 or age>100:\n",
    "            raise Exception('年龄必须在0到100之间')\n",
    "        self._age = age\n",
    "\n",
    "    @property\n",
    "    def name(self):\n",
    "        return self._name\n",
    "\n",
    "    @name.setter\n",
    "    def name(self,name):\n",
    "        if name == self.name:\n",
    "            raise Exception('修改的名字与现在的名字相同，请重新修改')\n",
    "        else:\n",
    "            self._name = name\n",
    "\n",
    "mia = Player('mia',26,'山东','王者')\n",
    "mia.name = 'tom'\n",
    "print(mia.name)\n",
    "mia.age = 22\n",
    "print(mia.age)\n",
    "mia.city = '苏州'\n",
    "print(mia.city)\n",
    "print(mia.__dict__)\n"
   ],
   "id": "d000c4f45fd48c9a",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 魔法方法",
   "id": "42a7fa942dd8379b"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": [
    "class User(object):\n",
    "    def __init__(self,name):  # 构造函数 作用：创建对象时自动调用，用于初始化对象属性\n",
    "        print('__init__被调用')\n",
    "        self.name = name\n",
    "\n",
    "    def __str__(self): # 字符串表示 作用：当使用 print() 或 str() 时调用，返回易读的字符串\n",
    "        return '我的名字是%s'%self.name\n",
    "\n",
    "    def __add__(self, other): #加法操作 作用：定义 + 运算符的行为\n",
    "        return self.name + other.name\n",
    "\n",
    "    def __eq__(self, other): # 相等比较 作用：定义 == 运算符的行为\n",
    "        return self.name == other.name\n",
    "\n",
    "\n",
    "mia = User('mia')\n",
    "print(str(mia))\n",
    "print(mia)\n",
    "print(1+3)\n",
    "print('hi '+'mia')\n",
    "jack = User('mia')\n",
    "print(mia+jack)\n",
    "print(6==7)\n",
    "print(mia==jack)"
   ],
   "id": "10b817238de0ff91",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 第十二章：界面开发\n",
    "### 第一个微信程序\n"
   ],
   "id": "def978a917af6bad"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-11T07:36:12.952895Z",
     "start_time": "2025-10-11T07:36:03.337848Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import wx\n",
    "\n",
    "\n",
    "def onClick(event):\n",
    "    print('按钮被点击了')\n",
    "\n",
    "# 创建应用程序对象\n",
    "app = wx.App()\n",
    "# 创建窗口\n",
    "# size:宽，高 pos:（左上角）x坐标，y坐标\n",
    "frm = wx.Frame(None,title='mia学习系统',size=(600,800),pos=(100,100))\n",
    "# 显示窗口\n",
    "frm.Show()\n",
    "# 创建面板\n",
    "pl = wx.Panel(frm,size=(400,400),pos=(100,100))\n",
    "# 显示面板\n",
    "pl.Show()\n",
    "# 创建静态文本\n",
    "staticText = wx.StaticText(pl,label='欢迎学习python',pos=(200,200))\n",
    "# 显示静态文本\n",
    "staticText.Show()\n",
    "# 创建按钮\n",
    "btn = wx.Button(pl,label='测试')\n",
    "# 显示按钮\n",
    "btn.Show()\n",
    "# 给按钮绑定事件\n",
    "frm.Bind(wx.EVT_BUTTON,onClick,btn)\n",
    "\n",
    "# 进入主循环，让窗口一直显示\n",
    "app.MainLoop()"
   ],
   "id": "17e906483c804e15",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "按钮被点击了\n",
      "按钮被点击了\n",
      "按钮被点击了\n",
      "按钮被点击了\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 1
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 窗口类",
   "id": "9d8918eb8dc862d4"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "outputs": [],
   "execution_count": null,
   "source": [
    "import wx\n",
    "\n",
    "class MyFrame(wx.Frame):\n",
    "    # 构造方法\n",
    "    def __init__(self):\n",
    "        wx.Frame.__init__(self,None,title='mia学习系统')\n",
    "        # 创建面板\n",
    "        pl = wx.Panel(self)\n",
    "        # 创建静态文本\n",
    "        staticText = wx.StaticText(pl,label='欢迎学习python')\n",
    "        # 创建按钮\n",
    "        btn = wx.Button(pl,label='开始学习',pos=(300,400))\n",
    "\n",
    "\n",
    "# 创建应用程序对象\n",
    "app = wx.App()\n",
    "# 创建窗口\n",
    "frm = MyFrame()\n",
    "# 显示窗口\n",
    "frm.Show()\n",
    "# 让窗口一直显示\n",
    "app.MainLoop()"
   ],
   "id": "5da931296c3dafd2"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 抽奖器",
   "id": "2bed1f1003c7915d"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-11T08:03:02.057772Z",
     "start_time": "2025-10-11T08:02:52.267479Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import wx\n",
    "import random\n",
    "class MyFrame(wx.Frame):\n",
    "    # 抽奖列表\n",
    "    NameList = ['mia','tom','jack']\n",
    "\n",
    "    # 构造方法\n",
    "    def __init__(self):\n",
    "        wx.Frame.__init__(self,None,title='抽奖器',pos=(100,100),size=(400,600))\n",
    "        # 创建面板\n",
    "        self.pl = wx.Panel(self,pos=(0,0),size=(400,600))\n",
    "        # 设置背景颜色\n",
    "        self.SetBackgroundColour(wx.BLUE)\n",
    "        # self.SetBackgroundColour((200,0,100))\n",
    "        # self.SetBackgroundColour('#00FF00')\n",
    "        self.pl.SetBackgroundColour((180,45,0))\n",
    "        # 创建静态文本\n",
    "        self.staticText = wx.StaticText(self.pl,label=random.choice(self.NameList),pos=(0,50),size=(400,400),style=wx.TE_CENTRE)\n",
    "        # 创建字体\n",
    "        # 字体大小，字体包，字体风格，加粗\n",
    "        font = wx.Font(48,wx.FONTFAMILY_SWISS,wx.FONTSTYLE_NORMAL,wx.FONTWEIGHT_BOLD)\n",
    "        # 静态文本设置成我们自己创建的字体\n",
    "        self.staticText.SetFont(font)\n",
    "        # 创建按钮\n",
    "        self.btn1 = wx.Button(self.pl,label='开始抽奖',pos=(100,100))\n",
    "        self.btn2 = wx.Button(self.pl, label='结束抽奖', pos=(200, 100))\n",
    "        self.btn1.SetBackgroundColour((0,0,128))\n",
    "        # 绑定事件\n",
    "        self.Bind(wx.EVT_BUTTON,self.onClick,self.btn1)\n",
    "        self.Bind(wx.EVT_BUTTON, self.stop, self.btn2)\n",
    "\n",
    "    def onClick(self,event):# 抽奖\n",
    "        # print('click')\n",
    "        self.timer = wx.Timer(self) #创建了一个定时器\n",
    "        self.Bind(wx.EVT_TIMER,self.update_name,self.timer)\n",
    "        self.timer.Start(100) # 每隔100毫秒更新名字\n",
    "\n",
    "    def update_name(self,event):\n",
    "        self.staticText.SetLabelText(random.choice(self.NameList))\n",
    "\n",
    "    def stop(self,event):\n",
    "        self.timer.Stop()  # 停止计时\n",
    "\n",
    "\n",
    "if __name__ == \"__main__\": # python程序主入口\n",
    "    # 创建应用程序对象\n",
    "    app = wx.App()\n",
    "    # 创建窗口\n",
    "    frm = MyFrame()\n",
    "    # 显示窗口\n",
    "    frm.Show()\n",
    "    # 让窗口一直显示\n",
    "    app.MainLoop()"
   ],
   "id": "2e55445ab778c7e8",
   "outputs": [],
   "execution_count": 1
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 装饰器：给函数\"穿衣服\"，增强功能",
   "id": "32c627110219db04"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-11T08:51:02.777859Z",
     "start_time": "2025-10-11T08:51:02.765859Z"
    }
   },
   "cell_type": "code",
   "source": [
    "def my_decorator(func):\n",
    "    def wrapper():\n",
    "        print(\"函数执行前\")\n",
    "        func()\n",
    "        print(\"函数执行后\")\n",
    "    return wrapper\n",
    "\n",
    "@my_decorator\n",
    "def say_hello():\n",
    "    print(\"Hello!\")\n",
    "\n",
    "say_hello()\n",
    "\n",
    "\n",
    "# 带参数的装饰器\n",
    "def repeat(n):\n",
    "    def decorator(func):\n",
    "        def wrapper(*args, **kwargs):\n",
    "            for i in range(n):\n",
    "                result = func(*args, **kwargs)\n",
    "            return result\n",
    "        return wrapper\n",
    "    return decorator\n",
    "\n",
    "@repeat(3)\n",
    "def greet(name):\n",
    "    print(f\"Hello, {name}!\")\n",
    "\n",
    "greet(\"Alice\")"
   ],
   "id": "4aa3dacff6052b8b",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "函数执行前\n",
      "Hello!\n",
      "函数执行后\n",
      "Hello, Alice!\n",
      "Hello, Alice!\n",
      "Hello, Alice!\n"
     ]
    }
   ],
   "execution_count": 2
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 上下文管理器：确保资源\"有始有终\"，自动清理\n",
   "id": "db035e2997de1f96"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-11T08:55:42.755432Z",
     "start_time": "2025-10-11T08:55:42.742600Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 内置上下文管理器\n",
    "# 文件操作 - 自动关闭文件\n",
    "with open('iotest.txt', 'r',encoding='UTF-8') as f:\n",
    "    content = f.read()\n",
    "# 文件自动关闭\n",
    "\n",
    "# 锁操作\n",
    "import threading\n",
    "lock = threading.Lock()\n",
    "with lock:\n",
    "    # 线程安全操作\n",
    "    pass\n",
    "# 锁自动释放\n",
    "\n",
    "# 自定义上下文管理器（类方式）：\n",
    "class MyContextManager:\n",
    "    def __enter__(self):\n",
    "        print(\"进入上下文\")\n",
    "        return self  # 返回的资源对象\n",
    "\n",
    "    def __exit__(self, exc_type, exc_val, exc_tb):\n",
    "        print(\"退出上下文\")\n",
    "        if exc_type:  # 如果有异常\n",
    "            print(f\"异常: {exc_val}\")\n",
    "        return True   # 返回True表示异常已处理\n",
    "\n",
    "with MyContextManager() as cm:\n",
    "    print(\"在上下文中执行操作\")\n",
    "    # 如果发生异常，会在__exit__中处理"
   ],
   "id": "902a77fb5a00cd17",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "进入上下文\n",
      "在上下文中执行操作\n",
      "退出上下文\n"
     ]
    }
   ],
   "execution_count": 6
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## anaconda常用命令",
   "id": "c0e17a6ec3263690"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "outputs": [],
   "execution_count": null,
   "source": [
    "conda -help            # 查看帮助\n",
    "\n",
    "conda info             # 查看 conda 信息\n",
    "\n",
    "conda --version        # 查看 conda 版本\n",
    "\n",
    "conda update conda     # 更新 Conda (慎用)\n",
    "\n",
    "conda clean -all      # 清理不再需要的包\n",
    "\n",
    "conda <指令> --help     # 查看某一个指令的详细帮助\n",
    "\n",
    "conda config --show    # 查看 conda 的环境配置\n",
    "\n",
    "conda clean -p         # 清理没有用, 没有安装的包\n",
    "\n",
    "conda clean -t         # 清理 tarball\n",
    "\n",
    "conda clean --all      # 清理所有包和 conda 的缓存文件\n",
    "\n",
    "#样例 创建一个名为 myenv 的环境, python 版本为3.10\n",
    "conda create --name myenv python=3.10 # --name 可以简写为 -n\n",
    "\n",
    "conda activate learn #样例 切换到 learn 环境\n",
    "\n",
    "conda deactivate  #退出当前环境\n",
    "\n",
    "conda env list #查看当前电脑上所有的 conda环境\n",
    "\n",
    "conda remove --name learn - - all #删除环境样例\n",
    "\n",
    "conda create --name myclone --clone myenv #克隆环境样例\n",
    "\n",
    "conda install numpy=1.18  # =1.18可以不写 #安装包\n",
    "\n",
    "conda update numpy #更新包\n",
    "\n",
    "conda update --all #更新所有包到最新版本 (慎用)\n",
    "\n",
    "conda remove numpy #卸载包\n",
    "\n",
    "conda list #查看当前环境所有包\n",
    "\n",
    "conda search package-name #搜索包信息"
   ],
   "id": "5cbb02a7696de98d"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "# 后续补充语法\n",
    "## 1.列表推导式"
   ],
   "id": "fa70ab523c676c7a"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "outputs": [],
   "execution_count": null,
   "source": [
    "# 基本格式\n",
    "# [表达式 for 变量 in 可迭代对象]\n",
    "\n",
    "# 示例\n",
    "numbers = [1, 2, 3, 4]\n",
    "squares = [x**2 for x in numbers]  # [1, 4, 9, 16]\n",
    "\n",
    "# 等价于\n",
    "squares = []\n",
    "for x in numbers:\n",
    "    func = x**2\n",
    "    squares.append(func)"
   ],
   "id": "f856f7e8cebd3bf3"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
